Technical Q&A QA1355
Why aren't my tracking rects working?

Q: I'm trying to implement tracking rectangles so that I can recieve -mouseEntered: and -mouseExited: messages and provide visual feedback to the user. I've sent my view an -addTrackingRect:owner:userData:assumeInside: message, but it seems to have no effect.

A: This symptom usually results from trying to set tracking rectangles before your view has been added to a window.

Although NSView implements the -addTrackingRect:owner:userData:assumeInside: method, the list of tracking rectangles is kept by the window, not the view. When your -initWithFrame: method is executed, your view is not yet associated with any window, so the view can't actually set any tracking rects.

A better place to send your -addTrackingRect:.. messages is in a -viewDidMoveToWindow: or -awakefromNib method.

Document Revision History

DateNotes
2004-11-24First Version

Posted: 2004-11-24